package com.burst.reptile.modular.api.vo;

import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;

import com.burst.reptile.modular.zp.entity.ZpCity;
import com.fasterxml.jackson.annotation.JsonInclude;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * cascader数据封装
 * @author wujin
 *
 * @date: 2020年6月23日 上午10:31:59
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CascaderVo implements Serializable{

	private static final long serialVersionUID = 1L;

	/**
	 * 节点唯一标识
	 */
	private String value;
	
	/**
	 * 节点名称
	 */
	private String label;
	
	/**
	 * 是否存在下一个节点
	 */
	private boolean haveChildren;
	
	/**
	 * 是否禁用
	 */
	private boolean disabled;
	
	/**
	 * 子类
	 */
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private List<CascaderVo> children;
	
	/**
	 * 构造参数
	 * @param city
	 */
	public CascaderVo(ZpCity city) {
        this.value = city.getAid();
        this.label = city.getName();
        List<CascaderVo> collect = city.getChildren().stream().map(CascaderVo::new).collect(Collectors.toList());
        this.children = collect;
        this.haveChildren = collect.size() > 0 ? true : false;
    }
}
